10 S=53280:POKES,6:POKES+1,6 15 TL$="[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]" 20 BL$="[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]" 25 T=18:TK=T:OPEN15,8,15,"I" 30 PRINT"[147][158] [213]"TL$"[201]" 35 PRINT" [192][192][192][192][192][192][192][194] 1541 ALIGNMENT CHECK[158] [194][192][192][192][192][192][192][192]" 40 PRINT" [202]"TL$"[203]" 45 PRINT" BY GREG GRANVILLE" 50 PRINT" [213][192][192]ACTUAL HEAD POSITION[192][192][192][201]" 55 PRINT" [194] TRACK ="SPC(12)"[158][194]" 60 PRINT" [202]"BL$"[203]" 65 PRINT" [213][192]POSITION READ FROM DISK[192][201]" 70 PRINT" [194] TRACK ="SPC(12)"[158][194]" 75 PRINT" [202]"BL$"[203]" 80 PRINT" [213][192][192]ERROR STATUS[192][192][192][192][192][192][192][192][192][192][192][201]" 85 PRINT" [194]"SPC(25)"[158][194]" 90 PRINT" [202]"BL$"[203]" 95 PRINT" [213][192][192]ALIGNMENT STATUS[192][192][192][192][192][192][192][201]" 100 PRINT" [194]"SPC(25)"[158][194]" 105 PRINT" [202]"BL$"[203]" 110 PRINT"PUSH JOYSTICK LEFT & RIGHT TO MOVE HEAD" 115 PRINT" HOLD FIRE BUTTON TO READ DRIVE STATUS" 120 : 125 REM ************************** 130 REM *** CALCULATE T/S READ *** 135 REM ************************** 140 : 145 PRINT#15,"M-R"CHR$(0)CHR$(28) 150 GET#15,F$:IFF$=""THENF$=CHR$(0) 155 A=ASC(F$) 160 BT=3ANDA 165 A=(159ANDA)OR(96+32*((T>17)+(T>24)+(T>30))) 170 PRINT#15,"M-W"CHR$(0)CHR$(28)CHR$(1)CHR$(AOR4) 175 : 180 REM ****************************** 185 REM *** PRINT STATUS TO SCREEN *** 190 REM ****************************** 195 : 200 PRINT""TAB(21)T"[157] " 205 IFE<2THENPRINT""TAB(12)"NO ERROR DETECTED" 210 IFE>1THENPRINT""TAB(12)"READ ERROR SENSED" 215 R$=STR$(TK):IFE<1THENR$=" " 220 TR$=RIGHT$(R$,2):PRINT""TAB(22);TR$ 225 IFE<>0AND VAL(TR$)<(T-.5)ORVAL(TR$)>(T+.5)THEN245 230 IFE>1ANDT<>INT(T)THENPRINT""TAB(14)"ALIGNMENT OK ":E=0:GOTO275 235 IFE>1ANDT=INT(T)THENPRINT""TAB(14)"ALIGNMENT BAD":E=0:GOTO275 240 GOTO250 245 PRINT""TAB(14)"ALIGNMENT BAD":E=0:GOTO275 250 PRINT""TAB(14)" NOT CERTAIN " 255 REM *************************** 260 REM ****** READ JOYSTICK ****** 265 REM *************************** 270 : 275 J=NOTPEEK(56320)AND15 280 IFPEEK(653)THEN410 285 IF(NOTPEEK(56320)AND16)THEN410 290 IFJ=4ANDT>1THENC=-1:GOTO340 295 IFJ=8ANDT<35THENC=1:GOTO340 300 IFPEEK(197)=33THENPRINT#15,"I":T=18:E=0:A=214:GOTO160 305 IFPEEK(197)=23THEN520 310 GOTO145 315 : 320 REM **************************** 325 REM *** CHANGE HEAD POSITION *** 330 REM **************************** 335 : 340 BT=(BT+C)AND3 345 T=T+C*.5:IFT<1THENT=1 350 TK=INT(T) 355 IFT>35THENT=35 360 B=A AND252 365 C=B+BT 370 PRINT#15,"M-W"CHR$(0)CHR$(28)CHR$(1)CHR$(C) 375 E=0 380 GOTO145 385 : 390 REM *********************** 395 REM *** READ THE HEADER *** 400 REM *********************** 405 : 410 M$="":RESTORE 415 FORY=1TO11:READX:M$=M$+CHR$(X):NEXT 420 PRINT#15,"M-W"CHR$(0)CHR$(3)CHR$(11)M$ 425 PRINT#15,"M-W"CHR$(0)CHR$(0)CHR$(1)CHR$(208) 430 PRINT#15,"M-R"CHR$(0)CHR$(0) 435 GET#15,ER$:E=ASC(ER$+CHR$(0)) 440 IFE>127THEN340 445 IFE<>1THEN145 450 : 455 REM **************************** 460 REM *** NO ERROR/GET TRACK # *** 465 REM **************************** 470 : 475 PRINT#15,"M-R"CHR$(22)CHR$(0)CHR$(4) 480 FORZ=1TO2:GET#15,B$:NEXT 485 GET#15,B$:TK=ASC(B$+CHR$(0)) 490 GOTO145 495 : 500 REM **************************** 505 REM *** EXIT/DRIVE MOTOR OFF *** 510 REM **************************** 515 : 520 PRINT#15,"M-W"CHR$(0)CHR$(28)CHR$(1)CHR$(0) 525 FORX=1TO10:GETX$:NEXT 530 CLOSE15:PRINT"[147]MOTOR OFF"CHR$(13)"PROGRAM TERMINATED":END 535 DATA169,48,133,69,169,0,133,63,76,177,243